$$ \newcommand{\floor}[1]{\left\lfloor{#1}\right\rfloor} \newcommand{\ceil}[1]{\left\lceil{#1}\right\rceil} \renewcommand{\mod}{\,\mathrm{mod}\,} \renewcommand{\div}{\,\mathrm{div}\,} \newcommand{\metar}{\,\mathrm{m}} \newcommand{\cm}{\,\mathrm{cm}} \newcommand{\dm}{\,\mathrm{dm}} \newcommand{\litar}{\,\mathrm{l}} \newcommand{\km}{\,\mathrm{km}} \newcommand{\s}{\,\mathrm{s}} \newcommand{\h}{\,\mathrm{h}} \newcommand{\minut}{\,\mathrm{min}} \newcommand{\kmh}{\,\mathrm{\frac{km}{h}}} \newcommand{\ms}{\,\mathrm{\frac{m}{s}}} \newcommand{\mss}{\,\mathrm{\frac{m}{s^2}}} \newcommand{\mmin}{\,\mathrm{\frac{m}{min}}} \newcommand{\smin}{\,\mathrm{\frac{s}{min}}} $$

Prijavi problem


Obeleži sve kategorije koje odgovaraju problemu

Još detalja - opišite nam problem


Uspešno ste prijavili problem!
Status problema i sve dodatne informacije možete pratiti klikom na link.
Nažalost nismo trenutno u mogućnosti da obradimo vaš zahtev.
Molimo vas da pokušate kasnije.

Ажурирање вредности променљивих

Дефинисањем променљиве у програму ми јој додељујемо неку вредност. У досадашњим задацима смо могли да променљивама додељујемо вредност само једном, приликом њиховог дефинисања. На тај начин променљиве све време имају исту вредност током рада програма. У итеративним поступцима које ћемо сада упознати, биће потребно да променљивама мењамо вредности током извршавања програма (тиме се и оправдава њихов назив - променљиве). У наставку ћемо описати елементе програмског језика који се тичу измене (ажурирања) постојећих вредности променљивих.

Елементи програмског језика

Променљива може променити своју вредност тако што јој се додели нова вредност. На пример, наредни програм исписује 1, а затим 2, јер се током његовог извшавања вредност променљиве x мења са 1 на 2.

x = 1
print(x)
x = 2
print(x)

Често нова вредност променљиве зависи од њене старе вредности. Чест случај јесте повећање вредности неке променљиве за 1 (на пример, приликом пребројавања колико има објеката који задовољавају неки скуп услова), а наравно могуће је повећати вредност променљиве и за неку другу вредност која је различита од 1 (на пример, приликом рачунања суме бројева из неког датог скупа суму ћемо увећавати за вредност сваког од елемената тог скупа). Некад је потребно смањити текућу вредност променљиве, повећати je одређени број пута или смањити одређен број пута. Oваква измена променљиве x може се постићи изразом облика x = x op v, где је op неки од наведених оператора +, -, *, /, а v вредност за коју се променљива мења. На пример, наредбом zbir = zbir + a вредност променљиве zbir се увећава за вредност променљиве a, док се наредбом stepen = stepen * 2 вредност променљиве stepen увећава два пута. Ове наредбе не треба мешати са сличним записима из математике, који имају сасвим другачије значење (нпр. x = x + 1 би у математици могло да представља једначину која нема решења).

Наредбе додељивања вредности облика x = x op v могу се скраћено записати као x op= v и у пракси се често користи скраћени запис. На пример, уместо писања zbir = zbir + x, можемо скраћено записати zbir += x. Оператори доделе +=, -=, *=, /= називају се сложени оператори доделе. Поред наведених оператора као сложени оператор може се користити и оператор %=, али је његова употреба ређа од осталих сложених оператора доделе.

Променљиве се у функцију преносе по вредности, што значи да се у функцијама праве копије променљивих и измена вредности променљивих у функцијама се не преноси аутоматски на вредности променљивих коришћених у позиву. Илуструјмо ово примером.

def povecaj_za_dva(x):
    print("Vrednost x na ulazu u funkciju je ", x)
    x = x + 2
    print("Vrednost x na izlazu iz funkcije je ", x)

x = 0
print("Pocetna vrednost x je", x)
povecaj_za_dva(x)
print("Nova vrednost x je", x)

На почетку програма променљива x има вредност 0. Она се преноси у функцију тако што функција има своју копију променљиве x која се такође иницијализује на 0 (јер је то вредност наведена у позиву). У функцији се та копија увећава за два и на излазу из функције исписује се да је вредност променљиве x једнака 2. Међутим, по повратку у програм копија нестаје, а оригинално x и даље има вредност 0.